#ifndef MLP_LAYER_H
#define MLP_LAYER_H
#include <stdio.h>

struct LayerType;
typedef struct LayerType *MLPLayerPtr;

typedef double (*ActivateType)(double);
typedef double (*DiffActivateType)(double);


MLPLayerPtr InitLayer(int input_dim, int output_dim, 
    ActivateType activate, DiffActivateType activate_diff);

void DeInitLayer(MLPLayerPtr *p_layer_ptr);

void SaveLayer(const MLPLayerPtr layer_ptr, FILE *outfile);

MLPLayerPtr LoadLayerForInference(FILE *, ActivateType);
MLPLayerPtr LoadLayerForRetrain(FILE *, ActivateType, DiffActivateType);


#endif 
